You will learn about Numpy List, multidimensional array, arithmetic ndarray, indexing and slicing, element wise array, np.where
Video#1. Numpy Introduction¶
lingua franca(means medium of communication)
- Yaani jobhi Numpy mai hum data store karte hain wo
n dimensional array (ndarray)mai store hoga
- yaani agar hum python mai kaam karenge to humein loops ka sahaara lena parega, jabke yehi kaam hum Numpy mai karna chahen to hum ye single statement mai karsakte hain
contiguousmeans sharing a common border; touching![]()
agar appne 100 by 100 ki array banayi hai to jab usko access karenge to yaani OS usko access karne jayega to wo ubko 1 saath le ayega qk wo 1 saath parhe hue hain, usko memry mai 1 jaga sai doosri jaga move nahi karna parhta,1 hee jaga sai usko data mil jata haijabke agar hum list ki baat karenge to list jo hai wo dynamic arrays hote hain usmai kuch portion of data kisi jaga parh wa hai to kuch portion of data kahin or parha wa hai to apne data doosri jaga wala access karna hai to apko doosri jaga jaana parega to ismai time lagega
Video#2. Numpy VS Python List¶list1 = range(1000000)
list1
import numpy as np
arr1 = np.arange(1000000)
arr1
%timeit for i in range(1, 10): r = [x * 2 for x in list1]
%timeit for i in range(1, 10): r = arr1 * 2
Video#3. A Multidimensional Array Object¶import numpy as np
zerosArr = np.zeros((4, 4))
zerosArr
onesArr = np.ones((5, 5))
onesArr
emptyArr = np.empty((7,7))
emptyArr
list1 = [1,2,3,4,5]
list1
listToArr = np.array(list1)
listToArr
np.arange(1,100,10)
Video#4. Arithmetic with ndarray¶random.randn()¶randArr1 = np.random.randn((10))
randArr1
randArr2 = np.random.randn((10))
randArr2
arr1 = np.arange(2, 10, 2)
arr1
arr2 = np.arange(2, 10, 2)
arr2
add = arr1 + arr2
add
print(arr1)
print(arr2)
sub = arr1 - arr2
sub
mult = arr1 * arr2
mult
div = arr1 / arr2
div
scalar value:¶print(arr1)
print(arr2)
multByScalar1 = 2 * arr1
multByScalar1
print(arr1)
print(arr2)
inverseMatrix1 = 1 / arr1
inverseMatrix1
# since all elements are greater than 0, it is returning true
arr1 > 0
# agar numpy array ko as bool array pass kren to jo true hoti hain wo select hokar ajati hain
arr1[arr1 > 0]
Video#5. Indexing & Slicing¶arr1 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
arr1
arr1[4]
# Accessing elements greater than 5
arr1[arr1 > 5]
# agar mai isko 1 list pass kardun
arr1[[2,1]]
ndarray:¶# creating random array of 10 by 10
randArr = np.random.randn(10, 10)
randArr
# 1st row uth kar ajayegi
randArr[0]
randArr[0][4]
# 1 sai lekar end tak rows chahiyen or 1 ko chor kar 1 chahiyen to step=2,
# or agar cols humein saare chahiyen to hum comma lagake, double colon lagake, starting, ending or step sixe skip karden
###########3 randArr[1:10:2,::] ##################
randArr[1:10:2]
# agar mujhe tamaam rows chahiyen or shuru ke char cols chahiyen
randArr[::, 0:4]
# Creating ones array of order 5 by 5
onesArr = np.ones((5, 5))
onesArr
# 1st and last row and column ko skip karna hai
# to 1st and last row and 1st col and last col ko chor kar baqi ko hum zero (0) kardenge
onesArr[1:-1,1:-1] = 0
onesArr
Video#6. Fast Element-wise Array functions¶arr1 = np.array([5, 10, 15, 20])
arr1
np.sqrt()¶sqrtArr = np.sqrt(arr1)
sqrtArr
np.power()¶powerArr = np.power(arr1, 2)
powerArr
np.maximum(1stArr, 2ndArr)¶arr2 = np.array([50, 30, 50,-20])
arr2
print(arr1)
print(arr2)
# ye dono array ke har member ko alag alag compare karega or jo max hoga usse lelega
maxArr = np.maximum(arr1, arr2)
maxArr
Video#7. np.where()¶np.where ka function bohot kaam ata haifor exapmle apne 1 survey conduct kia or usmai apne employees ki salaries poochin lekin kuch employees ne apni salaries batayin 0 yaani wo apni salaries disclose nhi karna chahte, kuch ne values daaldi -1, baaqiyon ne values sahi daali
to ap ye karna chah rhe hain ke jahan pe salary 0 ya negatve arhi hai waha pe kuch default daalde e.g 25000 daalden
salariesArr = np.array([0, -1, 100000, 50000])
salariesArr
# jahan pe salaries 0 hain wahan pe daalden 25000, otherwise salary ko hum as it is rehne den
analyzedSalariesArr = np.where(salariesArr <= 0, 25000, salariesArr)
analyzedSalariesArr
# ya main yahan koi msg deskata hun us value ki jaga
msgSalariesArr = np.where(salariesArr <= 0, "Not OK", "OK")
msgSalariesArr
Video#8. Mathematical & Statistical Methods¶mean()sum() ka method use karen to apko pata chal jayega ke usmai kitne elements mojood hain qk True represents 1 jab hum sum karenge to total count ajayega
###### any()any() method check karega ke array mai koi element True to nhi hai? koi 1 element True to nhi hai?
###### all()all() ka method check karega ke tamaam elements True to nhi hain?
##################################################################################################################arr1 = np.array([10, 9, 7, 10, 7])
arr1
np.mean(arrName) OR arrName.mean()¶testArr1 = np.mean(arr1)
testArr2 = arr1.mean()
print(testArr1)
print(testArr2)
np.cumsum(arrName) OR arrName.cumum()¶testArr1 = np.cumsum(arr1)
testArr2 = arr1.cumsum()
print(testArr1)
print(testArr2)
np.cumprod(arrName) OR arrName.cumprod()¶testArr1 = np.cumprod(arr1)
testArr2 = arr1.cumprod()
print(testArr1)
print(testArr2)
# mai ye check akrta hun ke arr1 mai jo bhi element 6 sai bara ho wo ajaye as a bool or True = 1
arr2 = arr1 > 6
arr2
# doing sum of bool array
# it is returning 5 bcoz eac True is 1 so five True makes 5
boolArrSum = arr2.sum()
boolArrSum
np.any(arrName) OR arrName.any()¶# mai ye check karta hun ke koi element True hai bhi ya nhi using any()
anyTrueArr = arr2.any()
anyTrueArr
np.all(arrName) OR arrName.all()¶# ye check akrta hun ke tamaam elements True hain bhi ya nhi hain ?
allTrueArr = arr2.all()
allTrueArr
print(arr1)
# lets make some modification to arr2
arr2 = arr1 > 7
arr2
np.sum(arrName) OR arrName.sum()¶# ab hum agar sum karte hain to kia hoga ?
# now it is returning 3 bcoz there is three True so it sums to 3 each of whic equals 1
# 3 element aise hai joke True hain
boolArrSum1 = arr2.sum()
boolArrSum1
# kia koi element aisa hai joke true hai? g bilkul hai
boolArrAny1 = arr2.any()
boolArrAny1
# kia tamaam elements True hain ? G nhi
boolArrAll1 = arr2.all()
boolArrAll1
arr1:¶# first check that array is not sorted
print(arr1)
np.sort(arrName) OR arrName.sort()¶sortArr1 = arr1.sort()
print(sortArr1)
# arr1 sort hogyi
arr1.sort()
arr1
np.unique(arrName)¶# finding unique elements using unique() ?
# ismai apko np.unique ka method use karna parega qk error arha hai
uniqueArr = arr1.unique()
uniqueArr
# now it works with np.unique()
uniqueArr1 = np.unique(arr1)
uniqueArr1
Video#9. File Input Output¶np.save() 1st arg filename mangta hai or uski extension bhi mangta hain agar nhi denge extension to wo khud dedega or 2nd arg mai wo array ka naam mangta hai jisko ap save karna chahte hain lekin ye method sirf single array ko save kareganp.savez() agar ap multiple arrays save karana chahte hain to ye method use karenge1st arg mai filename phir comma separated arrays names that you wanna save #Create two arrays
arr1 = np.array([1, 4, 5, 7])
arr2 = np.array([8, 7, 9])
#print each of them
print(arr1)
print(arr2)
arr1:¶# mai arr1 ko save karunga in a file named "testArr1" ab qk mai yahan extension nhi derha to ye automatically "npy" dedega
np.save("testArr1", arr1)
testArr1:¶# laod karte hue mujhe file ki extension dena zaroori hai warna error ayega
loadArr1 = np.load("testArr1")
loadArr1
# now it works as we prvide extension
loadArr1 = np.load("testArr1.npy")
loadArr1
arr1 and arr2:¶savez() ka method use karunga qk mai yahan multiple arrays save kara rha hun or extension bhi yahan npy nhi balke npz hoginp.savez("testArr1AndArr2", arr1=arr1, arr2=arr2)
# now it is returning dict
# is sai hum values retrive karsakte hain
loadArr1AndArr2 = np.load("testArr1AndArr2.npz")
loadArr1AndArr2
# Jab uppar humne ye save ki thin to arr1 or arr2 diya tha key name nhi diya tha like arr1=arr1 and arr2=arr2 to ye cell..
# .. error derha tha now it works
loadArr1AndArr2["arr1"]
Video#10. Linear Algebra functions¶
arrName1.dot(arrName2) product of two matrix calculate karegaarrName.inv() inverse of marixarrName.det() determinant nikaalsakte hain
############################################################arr1 = np.array([
[24, 45],
[12, 56],
[44, 78]
])
arr1
# arr1 is 3 by 2 of order
np.shape(arr1)
arr2 = np.array([
[34, 56, 90],
[22, 12, 34],
])
arr2
# arr2 is of 2 by 3 order
np.shape(arr2)
arrName1.dot(arrName2):¶dotArr = arr1.dot(arr2)
dotArr
print(arr1)
print(arr2)
(3) arrName.transpose()¶# (3 by 2) ka matrix (2 by 3) mai convert hokar agya
transposeArr = arr1.transpose()
transposeArr
traceArr = arr1.trace()
traceArr
Video#11. Pseudo Random Number Generator¶Random number ki zarurat q pesh ati hai? jab hum dataset load karte hain to datasets mai biasness ko khatam karne keliye aksar humne apne data ko randomize karna parhta hai, data ko shuffle karna parhta hai, taake kisi data ki specific sequence ki wajah sai biasness ko khatam karsaken
truly random number generate karna poosible nhi hai computer keliye qk computer kisi formula ke taht random number generate karta hai isiliye hum kehte hain ke ye pseodo-random number generations modules hain
# seed value ap kuch bhi desakte hain
np.random.seed(7)
# ab mai normal distribution ke through 3 by 3 ka 1 matrix generate karwata hun randomly
# to ye eik random number generate hua normal distribution ke thorugh
np.random.normal(size=(3,3))
# unifom distribution ke through bhi random number generate karsakte hain
np.random.uniform(size=(3,4))
12. Numpy Advanced Array Manipulations¶13. Reshape¶arr1 = np.floor(np.abs(np.random.randn(4,5)))
arr1
# by default isne row major order mai save kia hai, ismai pehli dimension 2 hai second dimension bhi 2 hai or last yaani 3rd..
# .. dimension 5 hai
arr1.reshape((2,2,5))
# reshape karte hue mai column major order bhi batasakta hun
orderC = arr1.reshape((2,2,5), order='C')
orderC
orderF = arr1.reshape((2,2,5), order='F')
orderF
Video#14. Concatenate¶vstack or hstackvstack matlab ap concatenation perform kar rhe hain or axis apne 0 diya hai, yaani row wise concatenate kar rhe hainhstack mai ap concatenation kar rhe hain along cols ya axis=1 kardia apne is function ke through# create list 1 & 2
list1 = [[1,3,5], [7,9,0]]
list2 = [[11,13,15], [17,19,10]]
# convert list 1 & 2 to np array
arr1 = np.array(list1)
arr2 = np.array(list2)
# concatenate two arrays
# as a tuple both arrays will be passed
# concatenated row wise, and col wise respectively
row_wise = np.concatenate((arr1,arr2), axis=0)
col_wise = np.concatenate((arr1,arr2), axis=1)
print(row_wise)
print("=======================")
print(col_wise)
# concatenate two arrays using functions
# dont need to specify axis
row_wise1 = np.vstack((arr1,arr2)) # vstack >>> row wise
col_wise1 = np.hstack((arr1,arr2)) # hstack >>> col wise
print(row_wise1)
print("===================")
print(col_wise1)
Video#15 Split¶# create list
list1 = [1,4,5,6,7,9,1,4]
# convert list1 to array
arr1 = np.array(list1)
arr1
# np.split() mai 1st arg mai us array ka naam dena hai jisko maine split karna hai, 2nd arg mai bataunga kin positions pe split
# ..karna hai, to ye 3 parts mai array break hogyi
# [1, 4, 5, 6, 7, 9, 1, 4] >>>>>> array elements
# 0, 1, 2, 3, 4, 5, 6, 7 >>>>>> indexes od elements
# | |
# mai ne kaha ke 2 or 5 par split kardo to ye un specific index par jakar split kardega
np.split(arr1, [2,5])
# agar mere pass 2d array hoti
list1 = [[1, 4, 5, 6, 7, 9, 1, 4], [11, 14, 15, 16, 17, 19, 11, 14]]
# convert list to 2d array
arr2d = np.array(list1)
arr2d
# splitting arr2d col wise(axis=1)
# [
# [ 1, 4, 5, 6, 7, 9, 1, 4],
# [11, 14, 15, 16, 17, 19, 11, 14]
# ] 0, 1, 2, 3, 4, 5, 6, 7
# | |
np.split(arr2d, [4,6], axis=1)
# splitting arr2d row wise(axis=0)
# [
# [ 1, 4, 5, 6, 7, 9, 1, 4],
# [11, 14, 15, 16, 17, 19, 11, 14]
# ] 0, 1, 2, 3, 4, 5, 6, 7
# |
# rows 2 parts mai break hojayegi if split along 0 axis
np.split(arr2d, [1], axis=0)
Video#16 Tile & Repeat¶# create an array
arr1 = np.array([1,5,7,8])
arr1
# I call np.repeat() call karta hun or 1st arg mai main array ka naam pass karta hun jisko mai ne repeat karna hai , or 2nd ..
# .. arg main mai ye batata hun ke kitni baar repeat karna hai
# to har element 3 times repeat hoga
repeatArr1 = np.repeat(arr1,3)
repeatArr1
# to np.tile() poori array ko repeat karta hai
tileArr1 = np.tile(arr1,2)
tileArr1
brodcasting: e.g agr hum 2 arrays par koi operation perform kar rhe hain or 1 array small zize ka hai, or 1 array large size ka hai to small size ka array apne ap ko khud hee expand karlega, is concept ko hum broadcating kehte hian